PackageManager分析(1)通过反射获取package size 发表于 2017-01-16 | 分类于 Android 通过反射获取package size源码地址 添加权限1android.permission.GET_PACKAGE_SIZE 核心代码123456789101112131415161718192021222324252627282930313233private void getPackageInfo(Context context, String pkg) { PackageManager pm = context.getPackageManager(); try { Method method_getPackageSizeInfo = pm.getClass().getMethod("getPackageSizeInfo", String.class, IPackageStatsObserver.class); method_getPackageSizeInfo.invoke(pm, pkg, new IPackageStatsObserver.Stub() { @Override public IBinder asBinder() { log.d("asBinder"); return super.asBinder(); } @Override public void onGetStatsCompleted(PackageStats packageStats, boolean b) throws RemoteException { final StringBuilder sb = new StringBuilder("onGetStatsCompleted\n"); sb.append("packageName:").append(packageStats.packageName).append("\n"); sb.append("cacheSize:").append(packageStats.cacheSize).append("\n"); sb.append("dataSize:").append(packageStats.dataSize).append("\n"); sb.append("externalDataSize:").append(packageStats.externalDataSize).append("\n"); log.i(sb.toString()); mHandler.post(new Runnable() { @Override public void run() { txt_content.setText(sb); } }); } }); } catch (Exception e) { e.printStackTrace(); }}